﻿using System.Collections.Generic;
using System.Linq;
using System.Web;
using pbvs.Data.Repositories.RepositoryExtensions;
using pbvs.Services.ServiceExtensions;
using pbvs.Models;
using pbvs.Models.DomainModels;
using pbvs.Services.Interfaces;
using pbvs.Data.Repositories.Interfaces;

namespace pbvs.Services
{
	public class ManageService : IManageService
	{
		private readonly IDefaultsRepository _defaults;

		public ManageService(IDefaultsRepository defaults)
		{
			_defaults = defaults;
		}

		public IEnumerable<DefaultDomainModel> GetDefaults()
		{
			return _defaults.Defaults.ToDomainModels();
		}

		public void LoadDefaultsIntoMemory()
		{
			HttpContext.Current.Application["SiteDefaults"] = _defaults.Defaults.ToList();
		}

		public IEnumerable<DefaultDomainModel> LoadDefaultsFromMemory()
		{
			return ((IEnumerable<Default>) HttpContext.Current.Application["SiteDefaults"]).ToDomainModels();
		}

		public int EditDefault(DefaultDomainModel def)
		{
			Default siteDefault = def.ToEntity();
			if (def.Id > 0)
			{
				_defaults.Update(siteDefault);
			}
			else
			{
				_defaults.Add(siteDefault);
			}
			_defaults.Save();
			LoadDefaultsIntoMemory();
			return siteDefault.Id;
		}
	}
}